<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>关于事件回调函数中的this</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>

<body>

    <!-- 准备一个容器 -->

    <div id="app">
        <h1>{{msg}}</h1>
        <h1>计数器：{{counter}}</h1>
        <button @click="counter++">点击我加1</button>
        <button @click="add">点击我加1</button>
        <button @click="add2">点击我加1,箭头函数</button>

    </div>

    <script>

        const vm = new Vue({
            el: '#app',
            data: {
                msg: '关于事件回调函数中的this',
                counter: 0
            },
            //1.methods对象中的方法可以通过VM去访问
            //2.methods对象中的方法没有做 数据代理
            methods: {
                add() {
                    // counter++   //错误的
                    this.counter++

                    // console.log(vm === this); //二者相同，故使用 vm.counter++ 也可以
                    // vm.counter++
                },
                add2: () => {
                    //this.counter++ //错误的
                    //console.log(this === vm)  //false
                    //箭头函数中没有this，箭头函数中的this是从父级作用域中继承过来的
                    //对于当前程序来说，父级作用域是全局作用域：window
                    console.log(this)
                    vm.counter++
                },
                sayHi() {
                    alert('Hi...')
                }
            }
        })

    </script>


</body>


</html>